package com.yc.spider.dyg;

import com.ly.common.util.DBHelper;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

public class MovieHtml {

    public static void main(String[] args) throws IOException {
        URL url = new URL("http://www.dygang.com");
        Document doc = Jsoup.parse(url, 5000);
        // 提取全部 a 元素
        Elements elements = doc.select("a");
        // 遍历    Elements 实现了 迭代器接口, 可以作为集合来循环
        for (Element element : elements) {
            String href = element.attr("href");
            // 筛选 电影详情 a 元素
            if(href.matches("/[a-z]+/\\d+/\\d+\\.htm")){
                captureOne("http://www.dygang.com" + href);
            }
        }
    }

    public static void captureOne(String address) throws IOException{

        // String address = "http://www.dygang.com/jilupian/20221008/50388.htm";
        URL url = new URL(address);
        // 下载解析远程地址, 返回文档对象
        Document doc = Jsoup.parse(url, 5000);
        // 提取页面中的单个元素
        Element element = doc.selectFirst("div.title>a");
        // 提取元素内部文本
        String name = element.text();// ==> innerText

        element = doc.selectFirst("#dede_content>p:nth-child(1)>img");
        // 提取元素属性
        String logo = element == null ? null : element.attr("src"); // jQuery  vue

        element = doc.selectFirst("#dede_content>p:nth-child(2)");
        // 提取元素文本
        String p = element == null ? null : element.text();
        String pressdate = null; //p == null ? null : p.replaceAll(".+首播: (.+\\(.+\\)).+", "$1");

        element = element == null ? null : doc.selectFirst("#dede_content>p:nth-child(3)");
        String intro = element == null ? null : element.text();

        String id = address.replaceAll(".+/(\\d+)\\.htm","$1");

        // 判断是否已经添加
        String sql = "select * from movie where id = ?";
        long count = DBHelper.count(sql, id);
        if(count == 0){
            sql = "insert into movie values(?,?,?,?,?,?,?)";
            DBHelper.update(sql, id,name,logo,intro,pressdate,null,address);
        }
    }

}
